Искусство схемотехники. Том 2 [Изд.4-е] - Пауль Хоровиц
Шрифт:
Интервал:
Закладка:
Для такого рода приложений разработаны специализированные МП, характеризующиеся тем, что такие узлы, как тактовые генераторы, схемы ввода-вывода и некоторые другие, обычно собираемые с использованием дополнительных микросхем, реализованы на том же кристалле, что и собственно микропроцессор за счет вычислительной мощности и большого адресного пространства, которые характеризуют МП, предназначенные для построения микроЭВМ, ориентированных на вычислительные задачи.
В этой главе мы опишем архитектуру и программирование микроЭВМ, а также их сопряжение с внешними устройствами на примерах полезных и простых способов подключения внешних устройств к IBM PC/XT. Здесь мы ссылаемся на стандартную PC-магистраль и ее модификации, такие как магистраль PC/AT и совместимых с ней ЭВМ, а также младших моделей линии PS/2. Большинство изложенных в настоящей главе идей будет перенесено в следующую главу, где мы углубимся в обстоятельное обсуждение по поводу проектирования и конструирования схем и целых систем на основе МП, а для примеров будем использовать МП «Motorola 68008» из серии 68000, которая совместно с серией Intel 8086 господствует в малых ЭВМ. Говоря о микроЭВМ в целом, надо отметить, что проектирование собственно ЭВМ, включая ОЗУ, внешние запоминающие устройства, устройства ввода-вывода, а также системное программирование и разработка сервисных программ являются предметом заботы изготовителя, а также его коллег, производящих комплектующие аппаратные и программные средства. Пользователю надо только позаботиться о специализированных интерфейсах и программировании своих прикладных задач. Напротив, в специализированных МП-системах выбор типа ЗУ, схемных и программных решений, вообще говоря, должен быть сделан проектировщиком. Изготовители микроЭВМ, как правило, принимают на себя вопросы разработки системного и сервисного программного обеспечения, как части вычислительной системы в целом (часто-совместно с внешними устройствами), тогда как изготовители МП-комплектов и интегральных микросхем сосредоточены на вопросах проектирования и сбыта как собственно МП, так и вспомогательных микросхем. В настоящей главе мы рассмотрим архитектуру и программирование микроЭВМ и сосредоточимся на подробностях внутренних связей и сопряжений с внешними устройствами.
10.01. Архитектура микроЭВМРисунок 10.1 представляет типовую обобщенную схему большинства микроЭВМ. Рассмотрим эту схему.
Рис. 10.1. Блок-схема компьютера.
Центральный процессор. Центральный процессор — это сердце ЭВМ. Компьютеры выполняют вычисления в центральном процессоре над порциями данных, организованных как машинные слова. Размер слова может составлять от 4 до 32 бит и более, наиболее популярные современные микроЭВМ имеют 16-битовое слово. Восемь бит составляют байт, а половину байта-четыре бита-иногда называют «нибл». Часть ЦП, называемая дешифратором команд, интерпретирует последовательные команды, выбираемые из памяти, выясняя тем самым, что надлежит делать процессору в каждом случае. В состав ЦП входит арифметическое устройство, которое может выполнять такие операции, как сложение, нахождение дополнения, сдвиг, пересылку и некоторые другие над числами, находящимися в регистрах, а в некоторых случаях и в памяти. Программный счетчик постоянно отслеживает ход выполнения программы. Обычно значение программного счетчика инкрементируется после выполнения очередной команды, но оно может получить другое значение в результате выполнения команд безусловного перехода или ветвления — условного перехода. Управляющие линии магистрали обеспечивают сопряжение с памятью и устройствами ввода-вывода. Большинство компьютеров (и чем дальше - тем больше) имеют также регистр указателя стека и несколько флажков (переноса, нуля, знака), проверяемых при выполнении условных переходов. В состав многих высокопроизводительных процессов входит также сверхоперативная память (кэш-память), которая для ускорения доступа содержит величины, незадолго до этого извлеченные из памяти.
Значительная активность наблюдается в области экспериментов с параллельными процессами, где вы соединяете между собой много ЦП с целью достижения потрясающей вычислительной мощности. Со временем в области высокопроизводительной обработки такая тенденция может стать определяющей. В наше же время, однако, стандарт архитектуры микро-ЭВМ представлен однопроцессорными ЭВМ, которые выполняют команды последовательно.
Память. Все компьютеры имеют некоторый объем быстрой памяти с произвольным доступом, такую память, бывало, называли «сердцем» компьютера, поскольку запоминали и сохраняли данные малюсенькие магнитные сердечники - по одному на каждый запоминаемый бит. В большой микроЭВМ объем ОЗУ может достигать 10 Мбайт и более, хотя типичным значением является 1 Мбайт, а в микроконтроллерах объем ОЗУ может составлять всего 16 Кбайт. (Когда память измеряют в единицах К, это означает не 1000 байт, а 1024 или 210 байт; таким образом, 16 Кбайт на самом деле составляют 16 384 байт. Для обозначения 1000 мы употребляем строчную букву к.) Для того чтобы записать в такую память какой-либо код или считать его, обычно требуется около 100 не. Память с произвольным доступом почти всегда «разрушаема», это означает, что, когда электропитание отключается, информация улетучится (возможно, эту характеристику следовало бы назвать «забывчивостью»). Поэтому все компьютеры в своем составе имеют и неразрушаемую память, обычно доступную только для чтения (ПЗУ) и предназначенную для того, чтобы «завести»[2] машину, находящуюся до включения питания в состоянии полной амнезии.
В дополнительное ПЗУ часто записывают системные и графические процедуры, а также другие программы, которые должны быть доступны в любой момент.
Для того чтобы считать из памяти или сохранить в памяти ту или иную информацию, ЦП «адресует» то слово (памяти), какое пожелает. Большинство компьютеров адресует память побайтно, начиная с нулевого байта и последовательно перебирая байты вплоть до последнего в памяти. Поскольку машинное слово большинства компьютеров составляет несколько байт, обычно за один раз вы заносите в память или извлекаете из нее группу байт; обычно необременительно иметь шину данных с разрядностью в несколько байт. Например, микроЭВМ, которые построены на МП 80386 или 68020, имеют 32-разрядную шину данных (что равно 4 байт), так что 32-разрядное слово может быть записано в память или считано из нее за один цикл выборки. Для того чтобы указать длину последовательности передаваемых байт, используют управляющие сигналы, причем даже для «солидных» шин вам на это потребуется всего 1–2 байт.
В компьютере с большим количеством сегментов памяти для указания произвольного адреса памяти необходимо 3–4 байт. Поскольку большинство адресов памяти в реальной программе обычно близко, все компьютеры поддерживают упрощенные модели адресации: «относительная» адресация определяет адрес по удалению его от текущей команды в памяти; «косвенная» адресация использует содержимое регистра ЦП для указания ячейки в памяти; «страничная» адресация использует укороченные адреса для указания на заданную ячейку памяти в пределах малого диапазона (страницы); «прямая» или «абсолютная» адресация использует несколько следующих за командой байт для указания адреса. Современные ЦП венчают этот краткий список «индексной», «автоинкрементной» и другими полезными способами адресации, которых мы коснемся в следующей главе.
Во время выполнения программы в памяти находятся как собственно программа, так и данные. Центральный процессор извлекает команды из памяти, выясняет, что они означают и поступает соответственно, при этом часто требуется сохранить данные где-нибудь в памяти. Обычно неспециализированные универсальные компьютеры хранят программы и данные в одной и той же памяти, причем компьютер на самом деле не отличает одних от других. Если программа пойдет не туда и начнет «исполнять» данные, могут начаться забавные вещи!
Поскольку компьютерные программы большую часть своей жизни проводят в циклах, состоящих из сравнительно коротких последовательностей команд, вы можете увеличить производительность машины, используя малую по объему, но быструю кэш-память, в которую вы просто заносите копии ближайших используемых ячеек памяти. Центральный процессор с кэш-памятью сначала обращается именно к ней, перед тем, как осуществить выборку из более медленной основной памяти, когда циклы «крутятся» по одним и тем же адресам; часто можно достичь рекордной эффективности использования кэш-памяти до 95 % и выше, разительно увеличивая быстродействие.